package com.zerowidth.moc.web.controller.service;

import com.zerowidth.db.bean.ReportBean;
import com.zerowidth.db.bean.SignBean;
import com.zerowidth.moc.web.bean.LoginUserVM;
import com.zerowidth.moc.web.resp.ResultBean;
import org.springframework.http.ResponseEntity;

import jakarta.servlet.http.HttpServletRequest;
import java.util.List;

public interface AccountService {


    /////////////////////////////////   登录   //////////////////////////////////////
    ResponseEntity<ResultBean<LoginUserVM>> login(String phone, String authCode, String pwd_key_md5, String brand, String model);

    ResponseEntity<ResultBean<LoginUserVM>> loginSNS_WX(HttpServletRequest request, String unionid, String nickname, String headimgurl);
    ResponseEntity<ResultBean<LoginUserVM>> loginSNS_QQ(HttpServletRequest request, String qqOpenId, String nickname, String headimgurl);

    ResponseEntity<ResultBean<LoginUserVM>> loginUserId8(HttpServletRequest request, String userId8);

    ResponseEntity<ResultBean<LoginUserVM>> loginAutoRegister(HttpServletRequest request);

    ResponseEntity<ResultBean<LoginUserVM>> loginStatId(HttpServletRequest request);


    /////////////////////////////////   创建账号   //////////////////////////////////////
    ResponseEntity<ResultBean<LoginUserVM>> createUserByPhone(String phone, String authCode);

    ResponseEntity<ResultBean<LoginUserVM>> createUserByRegister(String statid, String userName, String userPwd);

    ResponseEntity<ResultBean<LoginUserVM>> createUserByWX(String unionid, String nickname, String headimgurl);

    ResponseEntity<ResultBean<LoginUserVM>> createUserByQQ(HttpServletRequest request, String qqOpenId, String nickname, String headimgurl);

    ///////////////////////   发送验证码   ////////////////////////////
    //////////////////////////////////////////////////////
    ResponseEntity<ResultBean<String>> sendAuthCodeSMS(HttpServletRequest request, String phone, boolean send);

    ResponseEntity<ResultBean<LoginUserVM>> refresh(String statId);

    ResponseEntity<ResultBean<Void>> report(String app_channel, String phone, String userId, String reportContent);

    ResponseEntity<ResultBean<List<ReportBean>>> getReportList(String userId);

    ResponseEntity<ResultBean<Void>> modifyUserData(
            String avatar, String nick_name, String birthday, int gender);

    ResponseEntity<ResultBean<Void>> modifyPwd(String pwd_key_md5);

    ResponseEntity<ResultBean<String>> startSign();

    ResponseEntity<ResultBean<SignBean>> getSignData();

}
